"""
递归： 即方法（函数）自己调用自己的一种特殊编程写法
=================================================
递归需要注意：
1、注意退出的条件，否则容易编程无限递归
2、注意返回值的传递，确保从最内层，层层传递到最外层
=================================================

"""


def factorial(n):
    # 基本情况
    if n == 0:
        return 1
    # 递归情况
    else:
        return n * factorial(n - 1)


print(factorial(5))  # 输出: 120
